package com.ecommerce.dddmodules.sharedkernel.events;

import java.util.Map;
/**
 * @packageName: sharedkernel.events（共享内核.事件包）
 * @className: ApplicationEvent(抽象应用事件)
 * @description: 抽离应用事件
 * @author: luds
 * @version: v1.0
 * @date: 2021-04/02
 */
public abstract class ApplicationEvent {

	/**
	 * 有效载荷量保存空间（受保护）
	 */
	protected Map<String, String> payload;

	/**
	 * 由有效载荷量 构造应用事件
	 * @param payload 有效载荷量
	 */
	public ApplicationEvent(Map<String, String> payload) {
		this.payload = payload;
	}

	/**
	 * 获取应用事件的类型（抽象方法：子类非抽象方法必须实现）
	 * @return 返回类型
	 */
	public abstract String getType();

	/**
	 * 根据key获取有效载荷量的值
	 * @param key
	 * @return 返回有效载荷量的值
	 */
	public String getPayloadValue(String key) {
		// 如果有效载荷量空间 包含此可以；就返回此key对应的值；否则返回空
		if (this.payload.containsKey(key)) {
			return this.payload.get(key);
		}
		return "";
	}
}

